
#ifndef SX_SIMULATION_LISTENER_H
#define SX_SIMULATION_LISTENER_H

namespace Sx {
namespace Simulation {

/*
 * A listener class that is notified every time an event is triggered in
 * an AbstractSimulation. This interface is designed to allow different
 * components to interact with a simulation without adding all possible
 * functionalities directly in the simulation classes.
 */
class SimulationListener {
public:
	virtual void onConstruct() = 0;
	virtual void preUpdate() = 0;
	virtual void postUpdate() = 0;
	virtual void preRender() = 0;
	virtual void postRender() = 0;
	virtual void onReset() = 0;
	virtual void onPause() = 0;
	virtual void onResume() = 0;
	virtual void onDestroy() = 0;
};

}

}

#endif
